
/**
 * Contains useful definitions bits of data and definitions for the
 * kernel.
 */

#ifndef __KERNEL
#  define __KERNEL

extern unsigned int __memory;   /* KBytes of memory. */

struct __grub_mb_info {

  /* MultiBoot info version number */
  unsigned long flags;

  /* Available memory from BIOS */
  unsigned long mem_lower;
  unsigned long mem_upper;

  /* "root" partition */
  unsigned long boot_device;

  /* Kernel command line */
  unsigned long cmdline;

  /* Boot-Module list */
  unsigned long mods_count;
  unsigned long mods_addr;

  union {
    struct {
      /* (a.out) Kernel symbol table info */
      unsigned long tabsize;
      unsigned long strsize;
      unsigned long addr;
      unsigned long pad;
    } a;

    struct {
      /* (ELF) Kernel section header table */
      unsigned long num;
      unsigned long size;
      unsigned long addr;
      unsigned long shndx;
    } e;
  } syms;

  /* Memory Mapping buffer */
  unsigned long mmap_length;
  unsigned long mmap_addr;

  /* Drive Info buffer */
  unsigned long drives_length;
  unsigned long drives_addr;

  /* ROM configuration table */
  unsigned long config_table;

  /* Boot Loader Name */
  unsigned long boot_loader_name;

  /* APM table */
  unsigned long apm_table;

  /* Video */
  unsigned long vbe_control_info;
  unsigned long vbe_mode_info;
  unsigned short vbe_mode;
  unsigned short vbe_interface_seg;
  unsigned short vbe_interface_off;
  unsigned short vbe_interface_len;

};

void __kernel_panic();

#endif
